import $api from './api/index.js' // 公共接口
import $common from './js/common.js' // 公共方法
import $common_base from './js/common_base.js' // 公共方法(基础)
import $common_wx from './js/common_wx.js' // 公共方法(wx微信)
import $menuData from './data/menuData.js' // 菜单数据
import $AuthData from './data/AuthData.js' // 权限数据
import $listData from './data/listData.js' // 列表数据
import $iconData from './data/iconData.js' // 图标数据
App({
  // ========== 基础配置 ==========
  // baseUrl: 'https://a.vanjian.xyz:8086/wj_wenshanglv_wechat/', // 测试
  baseUrl: 'https://192.168.3.199:8085/wj_wenshanglv_wechat/', // 测试
  // tmplIds: ['vB8iaHyNlBgq-I-MBylWbCmgqYPrHoxtlrkOxLvDXXM'], // 模板id 昆山文商旅
  tmplIds: ['AMZBfHyY4osk2j0g42alXK1MXZPOui2dnjEecbTm5fw'], // 模板id 测试
  // baseUrl: 'https://wenshanglv.ourbim.com:8086/wj_wenshanglv_wechat/', // 昆山文商旅
  $api: $api, // 全部接口
  $common: $common, // 公共方法
  $common_base: $common_base, // 公共方法(基础)
  $common_wx: $common_wx, // 公共方法(wx微信)
  ...$menuData, // 菜单数据
  AuthData: $AuthData, // 权限数据
  listData: { // 列表数据
    ...$listData,
    depart: [] // 部门
  },
  iconData: $iconData, // 图标数据
  pageSize: 15, // 每页条数
  // ========== 动态数据 ==========
  menuCurrent: null, // 当前所在的一级菜单
  userInfo: {}, // 用户信息
  menuAuth: [], // 菜单权限
  Auth: {}, // 页面权限
  // ========== 需要监听的变量 ==========
  noReadMsgNum: { // 未读消息数
    sum: 0, // 总数
    spsum: 0, // 审批提醒
    dqsum: 0, // 到期提醒
    jfsum: 0, // 缴费提醒
    xjsum: 0 // 巡检提醒
  },
  watchData: {},
  // ========== end ==========

  onLaunch: function () {

    // ========== 新版本重置 ==========
    const updateManager = wx.getUpdateManager()
    updateManager.onCheckForUpdate((res) => { // 监听更新结果事件
      console.log('更新结果', res)
    })
    updateManager.onUpdateReady(() => { // 监听新版本更新事件
      wx.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否重启应用？',
        success: (res) => {
          // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
          res.confirm && updateManager.applyUpdate()
        }
      })
    })
    updateManager.onUpdateFailed(() => { // 新版本下载失败
      $common.message('新版本下载失败', 'error') // 提示信息
    })

    // ========== 微信登录 ==========
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        console.log('wx-登录', res)
        $common.openLoading() // 开启加载
        $api.login.loginF({
          code: res.code
        }).then(({ data }) => {
          console.log('api-登陆1', data)
          this.userInfo = data || {}
          $common.closeLoading() // 关闭加载
          if (this.userInfo.id) {
            $common_base.getMenuAuth(this.userInfo.roleid) // 获取菜单权限
          }
        }).catch((res1) => {})
      },
      fail: res => {
        $common.closeLoading() // 关闭加载
        $common.message('自动登录失败', 'error') // 提示信息
      }
    })
  },

  // ========== 监听全局变量 ==========
  // 注: 若组件使用监听后, 父级监听事件会失效
  watch: function (that, obj, field) {
    Object.keys(obj).forEach(k => {
      const method = obj[k]
      const watchData = this[field || 'watchData']
      let value = watchData[k] // watchData[k]不能放在Object.defineProperty里
      Object.defineProperty(watchData, k, {
        configurable: true,
        enumerable: true,
        set: (newVal) => {
          if (newVal === value) return
          value = newVal
          method && method.call(that, newVal, k)
        },
        get: () => {
          return value
        }
      })
    })
  }

})